package requeteur.ejb.commun.dto;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

/**
 * @author Laurent
 * @version 0.1
 */
public class Table {

	private String nom;
	private String type;
	private List<Champ> listeChamp = new ArrayList<Champ>();

	/**
	 * Constructeur de la classe <code>Table</code>.
	 * @throws SQLException
	 */
	public Table(ResultSet pResultSet) throws SQLException {
		if (pResultSet != null) {
			nom = pResultSet.getString("TABLE_NAME");
			type = pResultSet.getString("TABLE_TYPE");
		}
	}

	/**
	 * <p><b>Accès en lecture à l'attribut nom.</b></p>
	 * @return Retourne l'attribut nom sous forme de <code>String</code>.
	 */
	public String getNom() {
		return nom;
	}

	/**
	 * <p><b>Accès en écriture à l'attribut nom.</b></p>
	 * @param pNom L'attribut nom à modifier.
	 */
	public void setNom(String pNom) {
		nom = pNom;
	}

	/**
	 * <p><b>Accès en lecture à l'attribut type.</b></p>
	 * @return Retourne l'attribut type sous forme de <code>String</code>.
	 */
	public String getType() {
		return type;
	}

	/**
	 * <p><b>Accès en écriture à l'attribut type.</b></p>
	 * @param pType L'attribut type à modifier.
	 */
	public void setType(String pType) {
		type = pType;
	}

	/**
	 * <p><b>Accès en lecture à l'attribut listeChamp.</b></p>
	 * @return Retourne l'attribut listeChamp sous forme de <code>List<Champ></code>.
	 */
	public List<Champ> getListeChamp() {
		return listeChamp;
	}

	/**
	 * <p><b>Accès en écriture à l'attribut listeChamp.</b></p>
	 * @param pListeChamp L'attribut listeChamp à modifier.
	 */
	public void setListeChamp(List<Champ> pListeChamp) {
		listeChamp = pListeChamp;
	}

	/**
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof Table)) {
			return false;
		}
		Table other = (Table) obj;
		return new EqualsBuilder().append(nom, other.nom).isEquals();
	}

	/**
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return new HashCodeBuilder(17, 37).append(nom).toHashCode();
	}

}
